package com.leyou.common.advice;

import com.leyou.common.domain.ExceptionResult;
import com.leyou.common.exceptions.LyException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

/**
 * @version V1.0
 * @author: Ljxpa
 * @date: 2020/03/02 20:52
 * @description: 统一异常处理类,@ControllerAdvice该注解默认情况下，会拦截所有加了@Controller的类，然后调用自定义的处理异常的方法
 */
@ControllerAdvice
@Slf4j
public class BasicExceptionAdvice {

	/**
	 *
	 * @param e 自定义的异常
	 * @return
	 * ExceptionResult 是返回给前端的一个包含的异常信息和状态码以及发生异常时间的一个结果对象
	 */
	@ExceptionHandler(LyException.class)
	public ResponseEntity<ExceptionResult> handleItemException(LyException e){
		return ResponseEntity.status(e.getStatus()).body(new ExceptionResult(e));
	}

	// @ExceptionHandler(RuntimeException.class)//该注解表示当拦截到了该异常，就执行该方法，注解内的异常可以写多个
	// // 返回值可以是ResponseEntity<T>，也可以是ModelAndView
	// public ResponseEntity<String> handleException(RuntimeException e){
	// 	return ResponseEntity.status(400).body(e.getMessage());
	// }
}
